import Vue from 'vue/types'
import Vuex from 'vuex/types'
Vue.use(Vuex)

const state = {//state为全局可访问的对象
  num : 1
}

const getters = {//实时监听state属性值的变化
  ChangeNum(){//方法名随意，只是来承载变化的num的值
    return state.num
  }
}

const mutations = {//存放改变state的初始值得方法,这里面的值除了state里面的值,还可以存储一些额外的参数(变量，对象)
  addNum(state,m){//存放参数，第一个默认为state,第二个为自定义参数
    state.num += m
  },
  reduceNum(state,n){
    state.num -= n
  }
}

const actions = {
  addNum(context,m){//触发mutations里函数的方法,context和store具有相同的方法和属性
    context.commit('addNum',m)
  },
  reduceNum(context,n){//触发mutations里函数的方法,context和store具有相同的方法和属性
    context.commit('reduceNum',n)
  }
}

const store = new Vuex.Store({
  state,
  getters,
  mutations,
  actions
})

export default store
